/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年4月7日
 * 项目： rainhy-webcore
 */
package com.rainhy.webcore.transaction.context;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.transaction.PlatformTransactionManager;

import com.rainhy.core.util.AssertUtils;

/**
 * 事务容器配置器
 * 
 * @author rain
 * @version [版本号, 2016年4月7日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class TransactionContextConfigurator implements InitializingBean, ApplicationContextAware {
    
    /** 日志 */
    protected Logger logger = LoggerFactory.getLogger(TransactionContext.class);
    
    /** 事务管理器 */
    private PlatformTransactionManager transactionManager;
    
    /** spring 容器 */
    private ApplicationContext applicationContext;
    
    @Override
    public void afterPropertiesSet() throws Exception {
        if (transactionManager == null) {
            this.transactionManager = this.applicationContext.getBean(PlatformTransactionManager.class);
        }
        AssertUtils.notNull(transactionManager, "事务管理器不能为空!");
    }
    
    /** 事务管理器 */
    public PlatformTransactionManager getTransactionManager() {
        return transactionManager;
    }
    
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
    
}
